An expert system as known in the art is typically a computer software implemented rule-based reasoning system embodying the reasoning methodologies of one or more experts on a selected subject area or application. The rules comprising the expert system are formulated by a knowledge engineer who elicits information on the selected application from the experts. The expert system is implemented by a user who, in a user session, provides logical and/or data inputs and queries the system for responses on the selected application.
The knowledge engineer's task of setting up the structure of each rule in the expert system and linking the rules together as necessary is typically facilitated by the use of an expert system shell. Such shells are software packages, well known in the art, that serve to properly format rules inputted to the computer by the knowledge engineer thereby relieving him/her of formatting concerns. Of greater importance, the shell also comprises the programming for performing inference processes with the individual rules, forward and backward chaining through the rules to perform a desired reasoning process and interfacing with the expert system user during the user session to elicit relevant input data and provide reasoned conclusions. The knowledge engineer is thus relieved of programming these features. The result of this arrangement is a limitation on the flexibility with which conclusions of the reasoning process can be expressed. The conclusions are "hardwired" in the sense that given the user input data, the inference process can only yield the conclusions as originally entered into the expert system shell by the knowledge engineer. With conclusions hardwired, the ability of such expert systems to embody quantitative values within a conclusion is limited to those quantitative values that are known in advance by the knowledge engineer. More sophisticated expert systems, referred to in the art as "environments" rather than shells, enable the knowledge engineer to input into the system artificial intelligence program language statements effective to perform desired functions. Such language statements afford sufficient reasoning flexibility to avoid the hard-wired conclusions characteristic of the less sophisticated shells. However, such expert system environments typically do not include a user interface to enable an interactive session with the user in which the user is directly queried for data inputs deemed required by the system. Rather, relevant data is stored in advance by the user in a data base accessible by the expert system environment and the system searches that data base in order to perform the required reasoning process. Thus, while an expert system environment is capable of computing quantitative values and embodying such values in conclusions, the computations can only be performed using data loaded in advance into the data base. It would therefore be desirable to provide an expert system architecture and operating method that includes the ability to perform computations dependent on data inputs obtained by querying the user through a user interface in real time, i.e. during the user session, and wherein the computational results can be embodied within the conclusion provided to the user.
Another limitation of known expert systems is their inability to perform additional reasoning to determine whether a conclusion reached is a desirable conclusion and to take further action to appropriately modify a reasoning process upon determining that the conclusion is undesirable. It is characteristic of human reasoning to modify the reasoning process upon observing that a conclusion is unacceptable in view of other predetermined criteria. For example, the thinking process of a business person evaluating a proposal may require the logical condition A & B & C & D to be true (where "&" is conjunctive). If upon evaluating the proposal using this reasoning, the business person finds the probability associated with meeting this logical condition is unacceptably small (i.e. too risky), he/she may, based on experience, modify the reasoning logic such that the proposal depends on ((A & B) or (C & D)), which will have a higher probability of success. As a second example, an engineer performing a design task may reach a result deemed to be undesirable in view of predetermined design criteria. The engineer would, using his/her expert knowledge, effect an appropriate change in the reasoning process that should yield a more acceptable result and repeat the relevant portion of the design process. Thus with respect to both examples, the human, upon being confronted with an unacceptable conclusion from a reasoning process, modifies the reasoning process in a manner intended to provide a more desirable result. It would therefore be desirable to provide an expert system architecture and system operating method capable of providing a reasoning process in which the system can assess the acceptability of a conclusion and upon finding the conclusion unacceptable, appropriately modify and repeat the reasoning process.
Expert systems and system shells known in the art are, for the most part, programmed in artificial intelligence languages such as LISP or PROLOG. As a result, such systems must be run on special purpose computing workstations adapted for running that language. Such workstations are typically not entirely operable as stand alone units. Instead, the workstations often require interconnection, e.g. through a local area network, with a central unit for access to additional necessary facilities such as for graphics processing and file storage. Such workstations typically have longer execution times when processing expert system environments such as described above, as compared to program execution on a personal computer where the expert system program is coded in a conventional language such as "C". Therefore, in implementing an expert system in an application where real time user interaction is required and where speed of operation is significant, e.g. where the system responses are utilized to guide operation of a corresponding physical system or process, an artificial intelligence language based expert system running on a workstation may be less suitable than a "C" language based system running on a personal computer. It is additionally noted that while personal computing apparatus is self-contained and substantially less expensive in contrast to the above described workstations, personal computers have limited capability for processing artificial intelligence languages. It would therefore be desirable to provide an expert system architecture and expert system operating method for practice on personal computing apparatus that is not subject to the above described disadvantages associated with artificial intelligence language workstations.